1. Field of the Invention
The present invention is related to a method, system, and article of manufacture for agent processing.
2. Description of the Related Art
A client computer on which client applications run may be connected by a network, such as the Internet, to a server computer. The Internet is a world-wide collection of connected computer networks (i.e., a network of networks). The server computer may be connected to several low level devices. One type of low level device is a redundant array of independent disks (RAID). A RAID device enables storage of the same data on multiple hard disks, thus allowing simultaneous accesses to the copies of data.
When a client application desires to access a low level device to, for example, retrieve data about the low level device (e.g., whether the low level device is online and available for use or offline and not available for use), the client application submits a request for the data to, for example, the server computer connected to the low level device. The server computer generates a process to handle the client application's request. The process is assigned a portion of memory, which is referred to as the address space of the process.
Moreover, agents implemented in software at the server computer may be used to handle low level device interactions. An agent performs some function, such as retrieving data about a low level device. Thus, the server computer may generate an agent to fulfill the client application's request.
In many cases, the agents may access hardware or third party libraries that have unknown stability levels (e.g., crash often). In some systems, the agents run in the same address space as the process (e.g., a server process) that executed the agents. If agents are permitted to run within the same address space as a process, when one agent fails (e.g., because it is accessing an unstable device), the entire process fails and must be restarted. If the process generates multiple agents, then the failure of one agent causes the termination of all of the agents. This, of course, causes disruptions for a client application.
A Common Gateway Interface (CGI) is a specification for transferring information between a World Wide Web (“Web”) server and a CGI program. A CGI program may send multiple CGI requests (i.e., requests from a CGI program) to a Web server. Each request is handled by a CGI process, and each CGI process uses a separate address space. For example, if three CGI processes are invoked, each CGI process has a separate address space, resulting in the use of three different address spaces.
FastCGI is a programming interface that can speed up Web applications that use the Common Gateway Interface (CGI). In particular, FastCGI is a plug-in to a Web server computer that processes CGI requests received from a client computer. FastCGI manages multiple CGI requests with a single process that uses a single address space. Thus, if three CGI requests are received a the server computer, one CGI process using one address space handles all three CGI requests.
Thus, there is a need in the art for improved agent execution.